import { router } from '.';
import {getToken,setToken} from "../utils/auth";
import {usePerMissIoStoreWithOut} from "../store/modules/permission";

const perMissIoStore = usePerMissIoStoreWithOut();

let whiteList = ['/login']

router.beforeEach(async (to: any, _, next) => {
    const hasToken = getToken();
    // debugger
    if (hasToken) {
        // console.log(hasToken)
        // 已登录 已登录时访问login直接进入login
        if (to.path === '/login') {
            // next({ path: '/'});
            next()
        } else {
            //是否获取过用户权限及信息
            const isGetUserInfo = perMissIoStore.getIsGetUserInfo;
            if (isGetUserInfo) {
                next();
            } else {
                // 没有获取，请求数据
                await perMissIoStore.fetchAuths();
                // 过滤权限路由
                const routes = await perMissIoStore.buildRoutesAction();

                // 404 路由一定要放在 权限路由后面
                routes.forEach((route) => {
                    router.addRoute(route);
                });

                // hack 方法
                // 不使用 next() 是因为，在执行完 router.addRoute 后，
                // 原本的路由表内还没有添加进去的路由，会 No match
                // replace 使路由从新进入一遍，进行匹配即可
                next({ ...to, replace: true });
            }
        }
    } else {
        // 未登录
        if (whiteList.indexOf(to.path) !== -1) {
            next();
        } else {
            next('/login');
        }
    }
});
